interface RoomType {
  roomTypeCode: string
  numberOfUnits: number
  roomToChargeCode: string
  roomClass: string
  RoomTypeDescription: string
  RoomNumber: string
}

interface Total {
  value: number
  currencyCode: string
  decimals: number
}

interface RatePlan {
  ratePlanCode: string
  suppressRate: string
  RatePlanDescription: string
}

interface RoomRate {
  roomTypeCode: string
  ratePlanCode: string
  Rate: Total
}

interface GuestCount {
  ADULT: string
  CHILD: string
}

interface RoomStay  {
  RatePlan: RatePlan
  RoomType: RoomType
  RoomRate: RoomRate
  GuestCount: GuestCount
  StartDate: string
  EndDate: string
  Nights: number
  Total: Total
}

interface ResGuestRPH {
  RPH: number
}

interface NativeName {
  languageCode: string
  nameTitle: string
  firstName: string
  lastName: string
  middleName: string
  nameSuffix: string
}

interface Addresse {
  AddressLine: string[]
  cityName: string
  stateProv: string
  countryCode: string
}

interface Phone {
  phoneRole: string
  PhoneNumber: string
}

interface Profile {
  nameID: string
  PersonName: NativeName
  NativeName: NativeName
  vipCode: string
  Address: Addresse
  Phone: Phone
  Email: string
}

interface ResGuest {
  Profile: Profile
  resGuestRPH: number
}

export interface Reservation {
  fullName: string
  altName: string
  reservationStatus: string
  marketSegment: string
  sourceCode: string
  redemReservationFlag: string
  noPost: string
  commentsExists: string
  commentsCount: string
  tracesExists: string
  specialsExists: string
  roomPreferenceExists: string
  shareExists: string
  queueExists: string
  alertExists: string
  messageExists: string
  checkOutTime: string
  computedReservationStatus: string
  checkInTime: string
  returningGuest: string
  confirmNumber: string
  resvNameId: string
  legNumber: string
  RoomStay: RoomStay
  ResGuestRPHs: ResGuestRPH[]
  ResGuests: ResGuest[]
  partyCode: string
  PhoneNumber: string
  [key: string]: any
}
